// 文件模块，里面的变量、函数、类在不对外暴露的情况下都是私有的
// modules.exports 或 exports

// 变量
const uname = 'zhangsan';
const age = 20

// 函数
/* function fn() {
  console.log('fn', age)
}
*/
const fn = () => console.log('fn', age);
// 类
class Demo {
  // 私有属性
  _age = 20
  set age(v) {
    if (typeof v === 'string') {
      this._age = 1
    } else {
      this._age = v
    }
  }
  get age() {
    return this._age
  }

  test() {
    console.log('test')
  }
}
// 对象
const obj = {
  id: 1000
}

// 对外暴露了一个对象
// exports.__proto__ = module.exports
module.exports = {
  // uname: uname
  uname,
  fn,
  demo: new Demo(),
  d: Demo,
  obj
}
// exports.uname = uname